home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 December / 2004-12 CHIP.iso / CHIP / Porady / Srodowisko PHP-MySQL / WAMP5 1.3 / wamp5_1.3.exe / {app} / Apache / include / multithread.h < prev    next >
C/C++ Source or Header  |  2004-02-16  |  2KB  |  85 lines

  1. /* Copyright 1999-2004 The Apache Software Foundation
  2.  *
  3.  * Licensed under the Apache License, Version 2.0 (the "License");
  4.  * you may not use this file except in compliance with the License.
  5.  * You may obtain a copy of the License at
  6.  *
  7.  *     http://www.apache.org/licenses/LICENSE-2.0
  8.  *
  9.  * Unless required by applicable law or agreed to in writing, software
  10.  * distributed under the License is distributed on an "AS IS" BASIS,
  11.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12.  * See the License for the specific language governing permissions and
  13.  * limitations under the License.
  14.  */
  15.  
  16. #ifndef APACHE_MULTITHREAD_H
  17. #define APACHE_MULTITHREAD_H
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. #define MULTI_OK (0)
  24. #define MULTI_TIMEOUT (1)
  25. #define MULTI_ERR (2)
  26.  
  27. typedef void mutex;
  28. typedef void semaphore;
  29. typedef void thread;
  30. typedef void event;
  31.  
  32. /*
  33.  * Ambarish: Need to do the right stuff on multi-threaded unix
  34.  * I believe this is terribly ugly
  35.  */
  36. #ifdef MULTITHREAD
  37. #ifdef NETWARE
  38. #define APACHE_TLS
  39. #else
  40. #define APACHE_TLS __declspec( thread )
  41. #endif
  42.  
  43. thread *create_thread(void (thread_fn) (void *thread_arg), void *thread_arg);
  44. int kill_thread(thread *thread_id);
  45. int await_thread(thread *thread_id, int sec_to_wait);
  46. void exit_thread(int status);
  47. void free_thread(thread *thread_id);
  48.  
  49. API_EXPORT(mutex *) ap_create_mutex(char *name);
  50. API_EXPORT(mutex *) ap_open_mutex(char *name);
  51. API_EXPORT(int) ap_acquire_mutex(mutex *mutex_id);
  52. API_EXPORT(int) ap_release_mutex(mutex *mutex_id);
  53. API_EXPORT(void) ap_destroy_mutex(mutex *mutex_id);
  54.  
  55. semaphore *create_semaphore(int initial);
  56. int acquire_semaphore(semaphore *semaphore_id);
  57. int release_semaphore(semaphore *semaphore_id);
  58. void destroy_semaphore(semaphore *semaphore_id);
  59.  
  60. event *create_event(int manual, int initial, char *name);
  61. event *open_event(char *name);
  62. int acquire_event(event *event_id);
  63. int set_event(event *event_id);
  64. int reset_event(event *event_id);
  65. void destroy_event(event *event_id);
  66.  
  67. #else /* ndef MULTITHREAD */
  68.  
  69. #define APACHE_TLS
  70. /* Only define the ones actually used, for now */
  71. extern void *ap_dummy_mutex;
  72.  
  73. #define ap_create_mutex(name)    ((mutex *)ap_dummy_mutex)
  74. #define ap_acquire_mutex(mutex_id)    ((int)MULTI_OK)
  75. #define ap_release_mutex(mutex_id)    ((int)MULTI_OK)
  76. #define ap_destroy_mutex(mutex_id)
  77.  
  78. #endif /* ndef MULTITHREAD */
  79.  
  80. #ifdef __cplusplus
  81. }
  82. #endif
  83.  
  84. #endif /* !APACHE_MULTITHREAD_H */
  85.